1

Giới thiệu về Tác nhân Giải quyết Vấn đề

PolyU COMP5511Lecture 2
00:00

Từ Phản xạ đến Lập kế hoạch

Trong quá trình phát triển thiết kế tác nhân, chúng ta chuyển từ Tác nhân Phản xạ, vốn ánh xạ trực tiếp các tri giác thành hành động dựa trên những quy tắc đơn giản (ví dụ: “Nếu xe phía trước phanh, hãy bắt đầu phanh”), sang Tác nhân Giải quyết Vấn đề. Tác nhân phản xạ hoạt động dựa trên ngữ cảnh tức thời, trong khi tác nhân giải quyết vấn đề thì Dựa trên mục tiêu. Chúng xem xét những hệ quả trong tương lai của hành động để tìm ra một chuỗi hành động thỏa mãn một mục tiêu cụ thể.

  • Tác nhân Phản xạ: $Action = Function(Percept)$
  • Tác nhân Lập kế hoạch: $Action\_Sequence = Search(State, Goal)$

Biểu diễn Trạng thái Nguyên tử

Ở mức cơ bản này, các tác nhân sử dụng một Biểu diễn Nguyên tử. Điều này có nghĩa là trạng thái của thế giới được coi như một hộp đen—một nút đơn lẻ không có cấu trúc bên trong nào mà thuật toán tìm kiếm có thể thấy. Tác nhân chỉ lý luận về:

  • Trạng thái ($S$): Ảnh chụp nhanh của môi trường.
  • Hành động ($A$): Sự chuyển đổi giữa các trạng thái.
  • Kiểm tra Mục tiêu: Kiểm tra boolean xem trạng thái $s \in S_{goal}$ có thỏa mãn không.

Vòng lặp Giải quyết Vấn đề

Tác nhân giải quyết vấn đề tuân theo một chu trình bốn bước riêng biệt để điều hướng trong môi trường:

  1. Hình thành Mục tiêu: Quyết định mục tiêu nào cần theo đuổi dựa trên tình huống hiện tại.
  2. Hình thành Vấn đề: Trừu tượng hóa thế giới thực thành một mô hình toán học (Trạng thái và Hành động).
  3. Tìm kiếm: Mô phỏng các chuỗi hành động để tìm ra đường đi tối ưu.
  4. Thực thi: Thực hiện các hành động được tìm thấy trong giai đoạn tìm kiếm mà không cần cân nhắc thêm (giả định môi trường tĩnh).
Triển khai bằng Python (agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)